home *** CD-ROM | disk | FTP | other *** search
- {
- InputEvent.i for PCQ Pascal
-
- input event definitions
- }
-
- {$I "Include:Devices/Timer.i"}
- {$I "Include:Intuition/Screens.i"}
- {$I "Include:Utility/Hooks.i"}
-
- const
-
- {------ constants -------------------------------------------------}
-
- { --- InputEvent.ie_Class --- }
- { A NOP input event }
- IECLASS_NULL = $00;
- { A raw keycode from the keyboard device }
- IECLASS_RAWKEY = $01;
- { The raw mouse report from the game port device }
- IECLASS_RAWMOUSE = $02;
- { A private console event }
- IECLASS_EVENT = $03;
- { A Pointer Position report }
- IECLASS_POINTERPOS = $04;
- { A timer event }
- IECLASS_TIMER = $06;
- { select button pressed down over a Gadget (address in ie_EventAddress) }
- IECLASS_GADGETDOWN = $07;
- { select button released over the same Gadget (address in ie_EventAddress) }
- IECLASS_GADGETUP = $08;
- { some Requester activity has taken place. See Codes REQCLEAR and REQSET }
- IECLASS_REQUESTER = $09;
- { this is a Menu Number transmission (Menu number is in ie_Code) }
- IECLASS_MENULIST = $0A;
- { User has selected the active Window's Close Gadget }
- IECLASS_CLOSEWINDOW = $0B;
- { this Window has a new size }
- IECLASS_SIZEWINDOW = $0C;
- { the Window pointed to by ie_EventAddress needs to be refreshed }
- IECLASS_REFRESHWINDOW = $0D;
- { new preferences are available }
- IECLASS_NEWPREFS = $0E;
- { the disk has been removed }
- IECLASS_DISKREMOVED = $0F;
- { the disk has been inserted }
- IECLASS_DISKINSERTED = $10;
- { the window is about to be been made active }
- IECLASS_ACTIVEWINDOW = $11;
- { the window is about to be made inactive }
- IECLASS_INACTIVEWINDOW = $12;
- { extended-function pointer position report (V36) }
- IECLASS_NEWPOINTERPOS = $13;
- { Help key report during Menu session (V36) }
- IECLASS_MENUHELP = $14;
- { the Window has been modified with move, size, zoom, or change (V36) }
- IECLASS_CHANGEWINDOW = $15;
-
-
-
- { the last class }
-
- IECLASS_MAX = $15;
-
- { --- InputEvent.ie_SubClass --- }
- { IECLASS_NEWPOINTERPOS }
- { like IECLASS_POINTERPOS }
- IESUBCLASS_COMPATIBLE = $00;
- { ie_EventAddress points to struct IEPointerPixel }
- IESUBCLASS_PIXEL = $01;
- { ie_EventAddress points to struct IEPointerTablet }
- IESUBCLASS_TABLET = $02;
-
- { pointed to by ie_EventAddress for IECLASS_NEWPOINTERPOS,
- * and IESUBCLASS_PIXEL.
- *
- * You specify a screen and pixel coordinates in that screen
- * at which you'd like the mouse to be positioned.
- * Intuition will try to oblige, but there will be restrictions
- * to positioning the pointer over offscreen pixels.
- *
- * IEQUALIFIER_RELATIVEMOUSE is supported for IESUBCLASS_PIXEL.
- }
- Type
- iepp_Position_Struct = Record
- x,y : Short;
- END;
-
- IEPointerPixel = Record
- iepp_Screen : ScreenPtr; { pointer to an open screen }
- iepp_Position : iepp_Position_Struct;
- END;
- IEPointerPixelPtr = ^IEPointerPixel;
-
- { pointed to by ie_EventAddress for IECLASS_NEWPOINTERPOS,
- * and IESUBCLASS_TABLET.
- *
- * You specify a range of values and a value within the range
- * independently for each of X and Y (the minimum value of
- * the ranges is always normalized to 0).
- *
- * Intuition will position the mouse proportionally within its
- * natural mouse position rectangle limits.
- *
- * IEQUALIFIER_RELATIVEMOUSE is not supported for IESUBCLASS_TABLET.
- }
- iept_Range_Struct = Record
- x,y : Short;
- END;
- iept_Value_Struct = Record
- x,y : Short;
- END;
-
-
- IEPointerTablet = Record
- iept_Range : iept_Range_Struct; { 0 is min, these are max }
- iept_Value : iept_Value_Struct; { between 0 AND iept_Range }
-
- iept_Pressure : Short; { -128 to 127 (unused, set to 0) }
- END;
- IEPointerTabletPtr = ^IEPointerTablet;
-
- { The ie_EventAddress of an IECLASS_NEWPOINTERPOS event of subclass
- * IESUBCLASS_NEWTABLET points at an IENewTablet structure.
- *
- *
- * IEQUALIFIER_RELATIVEMOUSE is not supported for IESUBCLASS_NEWTABLET.
- }
-
- IENewTablet = Record
- { Pointer to a hook you wish to be called back through, in
- * order to handle scaling. You will be provided with the
- * width and height you are expected to scale your tablet
- * to, perhaps based on some user preferences.
- * If NULL, the tablet's specified range will be mapped directly
- * to that width and height for you, and you will not be
- * called back.
- }
- ient_CallBack : HookPtr;
-
- { Post-scaling coordinates and fractional coordinates.
- * DO NOT FILL THESE IN AT THE TIME THE EVENT IS WRITTEN!
- * Your driver will be called back and provided information
- * about the width and height of the area to scale the
- * tablet into. It should scale the tablet coordinates
- * (perhaps based on some preferences controlling aspect
- * ratio, etc.) and place the scaled result into these
- * fields. The ient_ScaledX and ient_ScaledY fields are
- * in screen-pixel resolution, but the origin ( [0,0]-point )
- * is not defined. The ient_ScaledXFraction and
- * ient_ScaledYFraction fields represent sub-pixel position
- * information, and should be scaled to fill a UWORD fraction.
- }
- ient_ScaledX, ient_ScaledY,
- ient_ScaledXFraction, ient_ScaledYFraction : WORD;
-
- { Current tablet coordinates along each axis: }
- ient_TabletX, ient_TabletY : Integer;
-
- { Tablet range along each axis. For example, if ient_TabletX
- * can take values 0-999, ient_RangeX should be 1000.
- }
- ient_RangeX, ient_RangeY : Integer;
-
- { Pointer to tag-list of additional tablet attributes.
- * See <intuition/intuition.h> for the tag values.
- }
- ient_TagList : Address;
- end;
- IENewTabletPtr = ^IENewTablet;
-
-
- CONST
- { --- InputEvent.ie_Code --- }
- { IECLASS_RAWKEY }
- IECODE_UP_PREFIX = $80;
- IECODE_KEY_CODE_FIRST = $00;
- IECODE_KEY_CODE_LAST = $77;
- IECODE_COMM_CODE_FIRST = $78;
- IECODE_COMM_CODE_LAST = $7F;
-
- { IECLASS_ANSI }
- IECODE_C0_FIRST = $00;
- IECODE_C0_LAST = $1F;
- IECODE_ASCII_FIRST = $20;
- IECODE_ASCII_LAST = $7E;
- IECODE_ASCII_DEL = $7F;
- IECODE_C1_FIRST = $80;
- IECODE_C1_LAST = $9F;
- IECODE_LATIN1_FIRST = $A0;
- IECODE_LATIN1_LAST = $FF;
-
- { IECLASS_RAWMOUSE }
- IECODE_LBUTTON = $68; { also uses IECODE_UP_PREFIX }
- IECODE_RBUTTON = $69;
- IECODE_MBUTTON = $6A;
- IECODE_NOBUTTON = $FF;
-
- { IECLASS_EVENT }
- IECODE_NEWACTIVE = $01; { active input window changed }
- IECODE_NEWSIZE = $02; { resize of window }
- IECODE_REFRESH = $03; { refresh of window }
-
- { IECLASS_REQUESTER Codes }
- { REQSET is broadcast when the first Requester (not subsequent ones) opens
- * in the Window
- }
- IECODE_REQSET = $01;
- { REQCLEAR is broadcast when the last Requester clears out of the Window }
- IECODE_REQCLEAR = $00;
-
-
- { --- InputEvent.ie_Qualifier --- }
- IEQUALIFIER_LSHIFT = $0001;
- IEQUALIFIER_RSHIFT = $0002;
- IEQUALIFIER_CAPSLOCK = $0004;
- IEQUALIFIER_CONTROL = $0008;
- IEQUALIFIER_LALT = $0010;
- IEQUALIFIER_RALT = $0020;
- IEQUALIFIER_LCOMMAND = $0040;
- IEQUALIFIER_RCOMMAND = $0080;
- IEQUALIFIER_NUMERICPAD = $0100;
- IEQUALIFIER_REPEAT = $0200;
- IEQUALIFIER_INTERRUPT = $0400;
- IEQUALIFIER_MULTIBROADCAST = $0800;
- IEQUALIFIER_MIDBUTTON = $1000;
- IEQUALIFIER_RBUTTON = $2000;
- IEQUALIFIER_LEFTBUTTON = $4000;
- IEQUALIFIER_RELATIVEMOUSE = $8000;
-
- IEQUALIFIERB_LSHIFT = 0;
- IEQUALIFIERB_RSHIFT = 1;
- IEQUALIFIERB_CAPSLOCK = 2;
- IEQUALIFIERB_CONTROL = 3;
- IEQUALIFIERB_LALT = 4;
- IEQUALIFIERB_RALT = 5;
- IEQUALIFIERB_LCOMMAND = 6;
- IEQUALIFIERB_RCOMMAND = 7;
- IEQUALIFIERB_NUMERICPAD = 8;
- IEQUALIFIERB_REPEAT = 9;
- IEQUALIFIERB_INTERRUPT = 10;
- IEQUALIFIERB_MULTIBROADCAST = 11;
- IEQUALIFIERB_MIDBUTTON = 12;
- IEQUALIFIERB_RBUTTON = 13;
- IEQUALIFIERB_LEFTBUTTON = 14;
- IEQUALIFIERB_RELATIVEMOUSE = 15;
-
-
- {------ InputEvent ------------------------------------------------}
-
- type
-
- InputEvent = record
- ie_NextEvent : ^InputEvent; { the chronologically next event }
- ie_Class : Byte; { the input event class }
- ie_SubClass : Byte; { optional subclass of the class }
- ie_Code : Short; { the input event code }
- ie_Qualifier : Short; { qualifiers in effect for the event}
- ie_addr_xy : Integer; { addr or pointer position }
- ie_TimeStamp : TimeVal; { the system tick at the event }
- end;
- InputEventPtr = ^InputEvent;
-
-